/**
 * @author wyb
 * @description 封装ajax
 */
import axios from "axios";
// 引入store实例 拿token
import Store from "../store";
// 通用配置  不用传给我们参数 固定的
const Axios = axios.create({
  baseURL: "/apis",
  timeout: 5000,
});
// 请求前的一个拦截器(interceptors)，用户访问需要token才能访问
Axios.interceptors.request.use(function (config) {
  // 返回成功
//   config.headers.token = "haha";
  // 通过在控制台 接口处看到的url来进行业务需不需要拦截 可以把不需要拦截的放在一个数组里面
  let paths = ["/user/validate/code", "/user/app/login"];
  if (paths.includes(config.url)) {
    return config;
  } else {
    //获取token数据
    const token = Store.getters["common/token"];
    //  如果没有token直接返回错误信息
    if (!!token) {
      // 如果token存在  就在请求头加上token值
      config.headers.token = token;
      return config;
    } else {
      // 返回失败
      return Promise.reject({code:400,message:'你已被拦截,不具备访问这个接口权限'})
    }
  }
});
function Ajax(req) {
  return new Promise((resolve) => {
    // axios.request({
    // 因为Axios里面有集成通用配置，所有用它发起请求，
    Axios.request({
      url: req.url,
      // 在请求体传递的参数---post
      method: req.method || "POST",
      // baseURL:'/apis',
      data: req.data || {},
      // 在请求地址上传递参数，就需要这个属性---get请求
      params: req.params || {},
      // 时效
      // timeout:5000
    })
      .then(({ data }) => {
        resolve(data);
      })
      .catch((e) => {
        resolve({ code: 888, message: "异步请求" });
        console.log(e);
      });
  });
}
export default Ajax;
